InitSpatialAverageBalance Subroutine

public subroutine InitSpatialAverageBalance(fileini, pathout, sm, smrz, smtz, runoff, infrate, perc, et, pet, caprise, error)

Initialization of spatial average of soil balance variables

Arguments

Type IntentOptional Attributes Name
character(len=*), intent(in) :: fileini
character(len=*), intent(in) :: pathout
type(grid_real), intent(in) :: sm

mean soil moisture (m3/m3)

type(grid_real), intent(in) :: smrz

root zone soil moisture (m3/m3)

type(grid_real), intent(in) :: smtz

transmission moisture (m3/m3)

type(grid_real), intent(in) :: runoff

runoff rate (m/s)

type(grid_real), intent(in) :: infrate

infiltration rate (m/s)

type(grid_real), intent(in) :: perc

percolation (m/s)

type(grid_real), intent(in) :: et

actual evapotranspiration rate (m/s)

type(grid_real), intent(in) :: pet

potential evapotranspiration rate (m/s)

type(grid_real), intent(in) :: caprise

actual evapotranspiration rate (m/s)

type(grid_real), intent(in) :: error

balance error (mm)


Variables

Type Visibility Attributes Name Initial
type(IniList), public :: iniDB

Source Code

SUBROUTINE InitSpatialAverageBalance   & 
!
 (fileini, pathout, sm, smrz, smtz, runoff, infrate, perc, et, pet, &
    caprise, error)  

IMPLICIT NONE

!arguments with intent in:
CHARACTER(LEN = *), INTENT(IN)    :: fileini 
CHARACTER(LEN = *), INTENT(IN)    :: pathout     
TYPE (grid_real), INTENT(IN) :: sm !!mean soil moisture (m3/m3)
TYPE (grid_real), INTENT(IN) :: smrz !!root zone soil moisture (m3/m3)
TYPE (grid_real), INTENT(IN) :: smtz !!transmission moisture (m3/m3)
TYPE (grid_real), INTENT(IN) :: runoff !!runoff rate (m/s)
TYPE (grid_real), INTENT(IN) :: infrate !!infiltration rate (m/s)
TYPE (grid_real), INTENT(IN) :: perc !!percolation (m/s)
TYPE (grid_real), INTENT(IN) :: et !!actual evapotranspiration rate (m/s)
TYPE (grid_real), INTENT(IN) :: pet !!potential evapotranspiration rate (m/s)
TYPE (grid_real), INTENT(IN) :: caprise !!actual evapotranspiration rate (m/s)
TYPE (grid_real), INTENT(IN) :: error !! balance error (mm)
 

!local declarations
TYPE(IniList)          :: iniDB
!-------------------------------end of declaration-----------------------------

!  open and read configuration file
CALL IniOpen (fileini, iniDB) 

! search for active variable for output
CALL Catch ('info', 'SpatialAverage', 'checking for balance active variables ')

countbalance = 0

!mean soil volumetric water content
IF ( IniReadInt ('soil-moisture', iniDB, section = 'soil-balance') == 1) THEN
   IF ( .NOT. ALLOCATED (sm % mat) ) THEN
       CALL Catch ('warning', 'SpatialAverage', 'soil mositure not allocated, &
                                            forced to not export spatial average ')
       balanceout (1) = .FALSE.
   ELSE
       balanceout (1) = .TRUE.
       countbalance = countbalance + 1
   END IF
ELSE
   balanceout (1) = .FALSE.
END IF

!root zone volumetric water content
IF ( IniReadInt ('soil-moisture-rz', iniDB, section = 'soil-balance') == 1) THEN
   IF ( .NOT. ALLOCATED (smrz % mat) ) THEN
       CALL Catch ('warning', 'SpatialAverage', 'soil mositure rz not allocated, &
                                            forced to not export spatial average ')
       balanceout (2) = .FALSE.
   ELSE
       balanceout (2) = .TRUE.
       countbalance = countbalance + 1
   END IF
ELSE
   balanceout (2) = .FALSE.
END IF

!transmission zone volumetric water content
IF ( IniReadInt ('soil-moisture-tz', iniDB, section = 'soil-balance') == 1) THEN
   IF ( .NOT. ALLOCATED (smtz % mat) ) THEN
       CALL Catch ('warning', 'SpatialAverage', 'soil mositure tz not allocated, &
                                            forced to not export spatial average ')
       balanceout (3) = .FALSE.
   ELSE
       balanceout (3) = .TRUE.
       countbalance = countbalance + 1
   END IF
ELSE
   balanceout (3) = .FALSE.
END IF


!runoff
IF ( IniReadInt ('runoff', iniDB, section = 'soil-balance') == 1) THEN
   IF ( .NOT. ALLOCATED (runoff % mat) ) THEN
       CALL Catch ('warning', 'SpatialAverage', 'runoff not allocated, &
                                            forced to not export spatial average ')
       balanceout (4) = .FALSE.
   ELSE
       balanceout (4) = .TRUE.
       countbalance = countbalance + 1
   END IF
ELSE
   balanceout (4) = .FALSE.
END IF


!infiltration
IF ( IniReadInt ('infiltration', iniDB, section = 'soil-balance') == 1) THEN
   IF ( .NOT. ALLOCATED (infrate % mat) ) THEN
       CALL Catch ('warning', 'SpatialAverage', 'infiltration not allocated, &
                                            forced to not export spatial average ')
       balanceout (5) = .FALSE.
   ELSE
       balanceout (5) = .TRUE.
       countbalance = countbalance + 1
   END IF
ELSE
   balanceout (5) = .FALSE.
END IF


!percolation
IF ( IniReadInt ('percolation', iniDB, section = 'soil-balance') == 1) THEN
   IF ( .NOT. ALLOCATED (perc % mat) ) THEN
       CALL Catch ('warning', 'SpatialAverage', 'percolation not allocated, &
                                            forced to not export spatial average ')
       balanceout (6) = .FALSE.
   ELSE
       balanceout (6) = .TRUE.
       countbalance = countbalance + 1
   END IF
ELSE
   balanceout (6) = .FALSE.
END IF

!actual evapotranspiration
IF ( IniReadInt ('actual-ET', iniDB, section = 'soil-balance') == 1) THEN
   IF ( .NOT. ALLOCATED (et % mat) ) THEN
       CALL Catch ('warning', 'SpatialAverage', 'et not allocated, &
                                            forced to not export spatial average ')
       balanceout (7) = .FALSE.
   ELSE
       balanceout (7) = .TRUE.
       countbalance = countbalance + 1
   END IF
ELSE
   balanceout (7) = .FALSE.
END IF

!potential evapotranspiration
IF ( IniReadInt ('potential-ET', iniDB, section = 'soil-balance') == 1) THEN
   IF ( .NOT. ALLOCATED (pet % mat) ) THEN
       CALL Catch ('warning', 'SpatialAverage', 'pet not allocated, &
                                            forced to not export spatial average ')
       balanceout (8) = .FALSE.
   ELSE
       balanceout (8) = .TRUE.
       countbalance = countbalance + 1
   END IF
ELSE
   balanceout (8) = .FALSE.
END IF


!capillary rise
IF ( IniReadInt ('capillary-rise', iniDB, section = 'soil-balance') == 1) THEN
   IF ( .NOT. ALLOCATED (caprise % mat) ) THEN
       CALL Catch ('warning', 'SpatialAverage', 'capillary rise not allocated, &
                                            forced to not export spatial average ')
       balanceout (9) = .FALSE.
   ELSE
       balanceout (9) = .TRUE.
       countbalance = countbalance + 1
   END IF
ELSE
   balanceout (9) = .FALSE.
END IF

!balance error
IF ( IniReadInt ('error', iniDB, section = 'soil-balance') == 1) THEN
   IF ( .NOT. ALLOCATED (error % mat) ) THEN
       CALL Catch ('warning', 'SpatialAverage', 'balance error not allocated, &
                                            forced to not export spatial average ')
       balanceout (10) = .FALSE.
   ELSE
       balanceout (10) = .TRUE.
       countbalance = countbalance + 1
   END IF
ELSE
   balanceout (10) = .FALSE.
END IF


balanceInitialized = .TRUE.

CALL IniClose (iniDB) 


CALL ConfigureExtents (fileini, pathout)


RETURN
END SUBROUTINE InitSpatialAverageBalance